﻿// 3721. 求30的倍数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
/*
https://www.acwing.com/problem/content/3724/


给定一个整数 n，你可以将其中的数字以任意顺序重新排列，组成新的数字（也可以不重排，保留原数字）。

请问能否组合出 30的倍数，如果可以，则输出满足条件的最大值，否则输出 −1。

例如，对于 210，你可以通过重排得到 201,210,012,021,102,120
，其中 120,210都是 30的倍数，由于要找最大的，所以答案是 210。

输入格式
一个整数 n。

输出格式
输出能够通过重排得到的最大符合条件的数。

如果不存在，则输出 −1。

数据范围
1≤n≤109
输入样例：
201
输出样例：
210
*/

vector<int> v;
int n;

void solve() {
	sort(v.begin(), v.end());
	reverse(v.begin(), v.end());
	int sum = 0;
	for (int i = 0; i < v.size(); i++) {
		sum += v[i];
	}
	if (sum % 3 != 0 || v.back() != 0) { cout << -1 << endl;  return; }

	int res = 0;
	for (int i = 0; i < v.size(); i++) {
		res = res * 10 + v[i];
	}

	cout <<  res <<endl;
}

int main()
{
	cin >> n;
	while (n) {
		int t = n % 10;
		n = n / 10;
		v.push_back(t);
	}
	solve();

	return 0;
}

 